ubuntu のバージョンは18.04
を使います。
cat /etc/lsb-release
# DISTRIB_ID=Ubuntu
# DISTRIB_RELEASE=18.04
# DISTRIB_CODENAME=bionic
# DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"
以下の順に見ていきます。
リモートの設定
ubuntu on WSL 上の設定
hello-world
1. リモートの設定
Windows 10 Home では Docker for Windows をインストールして使うことができないので、この代わりに外部の VPS を借りて、そこの Docker を使います。
今回は Amazon EC2 を借りました。
cat /etc/os-release
# NAME="Amazon Linux"
# VERSION="2"
# ID="amzn"
# ID_LIKE="centos rhel fedora"
# VERSION_ID="2"
# PRETTY_NAME="Amazon Linux 2"
# ANSI_COLOR="0;33"
# CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
# HOME_URL="https://amazonlinux.com/"
# [ec2-user@ip-172-31-18-243 ~]$ cat /etc/os-release
# NAME="Amazon Linux"
# VERSION="2"
# ID="amzn"
# ID_LIKE="centos rhel fedora"
# VERSION_ID="2"
# ID="amzn"
# ID_LIKE="centos rhel fedora"
# VERSION_ID="2"
# PRETTY_NAME="Amazon Linux 2"
# ANSI_COLOR="0;33"
# CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
# HOME_URL="https://amazonlinux.com/"
リモートのマシンに Docker が入っているかは以下で分かります。
docker -v
# Docker version 19.03.6-ce, build 369ce74
Docker version ...
と出なかった場合は以下のコマンドで入れられます。
sudo yum update -y
sudo amazon-linux-extras install docker
sudo usermod -a -G docker "$(whoami)"
sudo service docker start
docker -v
# Docker version 19.03.6-ce, build 369ce74
2. ubuntu on WSL 上の設定
リモートに鍵でssh
できるようにする話はここでは省略します。
例えばリモートは以下のような情報で接続できるとします。
ホストは
n.n.n.n
ユーザー名は
ec2-user
鍵は
~/.ssh/id_rsa
を使う
ここにssh docker-host
コマンドで接続できるようにしたい場合、~/.ssh/config
に以下を追記します。
Host docker-host
Hostname n.n.n.n
User ec2-user
IdentityFile
ただ、これだけの設定だとリモートに接続するだけで、先程 Docker をインストールした意味がないので、設定にもう1行加えて以下のようにします。
Host docker-host
Hostname n.n.n.n
User ec2-user
IdentityFile
LocalForward 127.0.0.1:12312 /var/run/docker.sock
このLocalForward
の設定のおかげで、ssh docker-host
している間localhost:12312
へのアクセスがリモートの/var/run/docker.sock
に転送されるようになります。
Docker がlocalhost:12312
を使うようにするにはDOCKER_HOST
環境変数を設定してあげます。
export DOCKER_HOST='localhost:12312'
そういえば、ubuntu on WSL にも Docker を入れてあげる必要があったので以下でインストールします。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker "$(whoami)"
Docker Compose が必要なら以下も実行します。
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
3. hello-world
以下が ubuntu on WSL から実行できれば完了です。
docker run hello-world
# Hello from Docker!